import request from "../../../utils/request"; // 引入封装的网络请求工具

interface ModelItem { // 定义从后端获取的模型数据结构
  id: number | string; // 模型唯一标识，可为数字或字符串
  name: string; // 模型名称
  coverUrl: string; // 模型封面图片地址
  shortDesc?: string; // 模型简介，可选字段
  scenicName?: string; // 景区名称，可选字段
  description?: string; // 模型描述，可选字段
  modelUrl: string; // 模型文件地址
  cornerUrl?: string; // 角标图片地址，可选字段
} // 结束模型类型定义

const FALLBACK_MODEL_LIST: ModelItem[] = [ // 默认模型列表，接口异常时回退使用
  { // 默认模型 1
    id: 1, // 默认模型 ID
    name: '旋转木马', // 默认模型名称
    coverUrl: 'https://xrmini.dwtcy.com.cn/images/xr/旋转木马.png', // 默认模型封面
    shortDesc: '指尖点醒桌面魔法，AR旋转木马带你转进小世界', // 默认模型简介
    modelUrl: 'https://xrmini.dwtcy.com.cn/jubensha.glb', // 默认模型文件地址
    cornerUrl: 'https://xrmini.dwtcy.com.cn/images/xr/1.png', // 默认角标图片
  }, // 结束默认模型 1
  { // 默认模型 2
    id: 2,
    name: '过山车',
    coverUrl: 'https://xrmini.dwtcy.com.cn/images/xr/过山车.png',
    shortDesc: '指尖点醒桌面魔法，AR过山车带你转进小世界',
    modelUrl: 'https://xrmini.dwtcy.com.cn/samor.glb',
    cornerUrl: 'https://xrmini.dwtcy.com.cn/images/xr/2.png',
  }, // 结束默认模型 2
  { // 默认模型 3
    id: 3,
    name: '童话城堡',
    coverUrl: 'https://xrmini.dwtcy.com.cn/images/xr/童话城堡.png',
    shortDesc: '指尖点醒桌面魔法，AR童话城堡带你转进小世界',
    modelUrl: 'http://192.168.2.17:8080/SingleSun.glb',
    cornerUrl: 'https://xrmini.dwtcy.com.cn/images/xr/3.png',
  }, // 结束默认模型 3
  { // 默认模型 4
    id: 4,
    name: '寺庙',
    coverUrl: 'https://xrmini.dwtcy.com.cn/images/xr/寺庙.png',
    shortDesc: '指尖点醒桌面魔法，AR寺庙带你转进小世界',
    modelUrl: 'https://xrmini.dwtcy.com.cn/SandTable.glb',
    cornerUrl: 'https://xrmini.dwtcy.com.cn/images/xr/4.png',
  }, // 结束默认模型 4
]; // 结束默认模型列表定义

const DETAIL_IMAGE = 'https://xrmini.dwtcy.com.cn/images/xr/点击了解详情.png'; // 详情按钮背景图

Page({ // 定义页面实例
  data: { // 页面初始数据
    modelList: FALLBACK_MODEL_LIST, // 当前展示的模型列表，默认使用本地数据
    detailImage: DETAIL_IMAGE, // 详情按钮图
    loading: false, // 是否显示加载状态
  }, // 结束 data 定义
  onLoad() { // 页面加载生命周期函数
    this.fetchModelList(); // 调用自定义方法获取模型列表

  }, // 结束 onLoad 函数
  async fetchModelList() { // 异步获取模型列表的方法
    this.setData({ loading: true }); // 设置 loading 状态为 true
    try{ // 尝试执行请求
      const res: any = await request.getModel(); // 调用后端接口获取模型数据
      if (res && res.data && Array.isArray(res.data)) { // 判断返回数据是否符合预期
        this.setData({ modelList: res.data }); // 使用后端数据更新页面
      } else { // 数据不符合预期时
        this.setData({ modelList: FALLBACK_MODEL_LIST }); // 使用本地默认数据
      }
    } catch (error) { // 捕获请求错误
      console.error('加载失败:', error); // 打印错误信息
      this.setData({ modelList: FALLBACK_MODEL_LIST }); // 使用本地默认数据
    } finally { // 无论成功或失败都会执行
      this.setData({ loading: false }); // 恢复 loading 状态
    }
  }, // 结束 fetchModelList 方法

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  }, // 页面初次渲染完成回调

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  }, // 页面显示回调

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  }, // 页面隐藏回调

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  }, // 页面卸载回调

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  }, // 下拉刷新回调

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  }, // 触底回调

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }, // 分享处理回调

  /**
   * 导航到AR页面并传递模型URL
   */
  navigateToAR(event: any) { // 跳转 AR 页面的方法
    const modelUrl = event.currentTarget.dataset.model; // 读取绑定的模型地址
    console.log('点击跳转到AR，模型URL:', modelUrl); // 打印模型地址方便调试
    wx.navigateTo({ // 调用跳转 API
      url: `/packageA/pages/AR/AR?modelUrl=${encodeURIComponent(modelUrl)}` // 携带模型地址跳转
    }); // 结束跳转配置
  } // 结束 navigateToAR 方法
}) // 结束页面定义